Image Classification for Adjustment

ABSTRACT

Image classification techniques are described for adjustment of an image. In one or more implementations, an image is classified by one or more computing device based on suitability of the image for adjustment to correct perspective distortion of the image. Responsive to a classification of the image as not suitable for the adjustment, suitability of the image is detected for processing by a different image adjustment technique by the one or more computing devices.

BACKGROUND

Images may be captured using a variety of different image capture devices. These may include conventional image capture devices that capture the images using film as well as image capture devices that may capture the images digitally. Additionally, the range in which devices that incorporate image capture devices is ever increasing, which has expanded from a stand-alone cameras to incorporation of the camera in a mobile device, such as a mobile phone, tablet, or other computing devices.

Images captured by this variety of different devices, however, may contain perspective distortions. Perspective distortions cause a scene captured by the image to differ from a layout expected by human perception. Conventional techniques there are utilized to correct these perspective distortions, however, may be resource intensive, may fail at correcting the distortions, and may introduce additional distortions. Accordingly, users of these conventional techniques may be forced to manually attempt a variety of different techniques to attempt to correct the distortion, which may not even be possible in some situations.

SUMMARY

Image classification techniques are described for adjustment of an image. In one or more implementations, an image is classified by one or more computing devices based on suitability of the image for adjustment. Responsive to a classification of the image as not suitable for the adjustment, suitability of the image is detected for processing by a different image adjustment technique by one or more computing devices.

This Summary introduces a selection of concepts in a simplified form that are further described below in the Detailed Description. As such, this Summary is not intended to identify essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description is described with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different instances in the description and the figures may indicate similar or identical items. Entities represented in the figures may be indicative of one or more entities and thus reference may be made interchangeably to single or plural forms of the entities in the discussion.

FIG. 1 is an illustration of an environment in an example implementation that is operable to employ techniques described herein relating to image classification for adjustment.

FIG. 2 depicts a system in an example implementation in which an image adjustment module of FIG. 1 and operation thereof is shown in greater detail.

FIG. 3 depicts a system showing the image classification module of FIG. 2 in greater detail as employing criteria to determine suitability for an associated image adjustment technique.

FIG. 4 depicts a system showing the image classification module of FIG. 2 in greater detail as employing additional criteria to determine suitability for an associated image adjustment technique.

FIG. 5 depicts a system showing the image classification module of FIG. 2 in greater detail as employing criteria to determine suitability for an associated image adjustment technique that involves a horizon.

FIG. 6 is a flow diagram depicting a procedure in an example implementation in which an image is classified based on suitability for adjustment to correct perspective distortion of the image.

FIG. 7 is a flow diagram depicting a procedure in an example implementation in which an image is classified based on suitability for upright adjustment and/or horizon adjustment to correct perspective distortion of the image.

FIG. 8 illustrates an example system including various components of an example device that can be implemented as any type of computing device as described and/or utilize with reference to FIGS. 1-7 to implement embodiments of the techniques described herein.

DETAILED DESCRIPTION

Overview

Image adjustment may be performed to correct a variety of different perspective distortions, such as skewing of an image scene in two dimensional and three dimensional space such that the appearance of the image “looks wrong” to a user, e.g., in-plane and out-of-plane rotation. However, conventional techniques that are employed to correct the perspective distortions may achieve unwanted results and further may be resource intensive such that a user is forced to wait for processing to view the unwanted results. Consequently, a user may become frustrated when using these conventional techniques.

Image classification techniques for image adjustment are described. In one or more implementations, the techniques may be employed to classify an image based on suitability for image adjustment. In the image is suitable as indicated by the classification, the image adjustment may then be performed. Additionally, this classification may be performed automatically and without user intervention. In this way, performance of operations involved in image adjustment may be skipped for images that are not suited for the adjustment.

Additionally, these techniques may continue for different image adjustment techniques. For example, a determination may be made that the image is not suitable for upright adjustment. Therefore, suitability of the image for processing by a different image adjustment technique may then be performed, such as for a horizon adjustment technique. In this way, a system may be implemented that may employ a variety of different adjustment techniques automatically and without user intervention based on suitability of the techniques for an image to be processed. A variety of different functionality may be employed in the implementation of these techniques, further discussion of which may be found in relation to the following sections.

In the following discussion, an example environment is first described that may employ the techniques described herein. Example procedures are then described which may be performed in the example environment as well as other environments. Consequently, performance of the example procedures is not limited to the example environment and the example environment is not limited to performance of the example procedures.

Example Environment

FIG. 1 is an illustration of an environment 100 in an example implementation that is operable to employ classification techniques described herein. The illustrated environment 100 includes a computing device 102 and an image capture device 104, which may be configured in a variety of ways.

The computing device 102, for instance, may be configured as a desktop computer, a laptop computer, a mobile device (e.g., assuming a handheld configuration such as a tablet or mobile phone), and so forth. Thus, the computing device 102 may range from full resource devices with substantial memory and processor resources (e.g., personal computers, game consoles) to a low-resource device with limited memory and/or processing resources (e.g., mobile devices). Additionally, although a single computing device 102 is shown, the computing device 102 may be representative of a plurality of different devices, such as multiple servers utilized by a business to perform operations “over the cloud” as further described in relation to FIG. 8.

The image capture device 104 may also be configured in a variety of ways. For example, the image capture device 104 may be configured as a stand-alone camera as illustrated, a video camera, scanner, copier, mobile device, and so forth. Although the image capture device 104 is illustrated separately from the computing device 102, the image capture device 104 may be configured as part of the computing device 102, e.g., for a tablet configuration, smart phone, and so forth.

The image capture device 104 is illustrated as including image sensors 106 that are configured to capture an image of an image scene 108, which is stored as image data 110. For example, the image sensors 106 may be configured to capture images using a Bayer pattern or other configurations. In another example, the image data 110 may be data captured of an image initially captured using film by the image capture device 104, e.g., a scan of an image developed on paper from film.

Regardless of how the image data 110 originated, the image data 110 may be obtained by an image processing module 112 for processing. Although illustrated as being implemented on the computing device 102, functionality represented by the image processing module 112 may also be implemented in whole or in part “over the cloud” via the network 114, such as by a server farm as part of a web service, in a distributed environment, and so on as further described in relation to FIG. 8.

An example of functionality image processing functionality that may be implemented by the image processing module 112 is illustrated as an image adjustment module 116. The image adjustment module 116 is representative of functionality to adjust the image data 110 for perspective distortions to generate adjusted image data 118. In this way, the image adjustment module 116 may adjust the image data 110 to be consistent with expectations of human perception, further discussion of which may be found below and shown in a corresponding figure.

FIG. 2 depicts a system 200 in an example implementation in which image adjustment module 116 and operation thereof is shown in greater detail. In this example, image data 110 is as captured from an image scene 108 in FIG. 1. As illustrated, however, the image data 110 includes a perspective distortion such that the image data 110 is skewed in two-dimensional and/or three-dimensional space. For example, the image data 110 as illustrated exhibits out-of-plate rotation. Accordingly, the image data 110 may be obtained by an image adjustment module 116 to correct this perspective distortion so that the image data 110 is consistent with expectations of human perception.

A variety of different techniques may be employed by the image adjustment module 116 to form adjusted image data 118. In the illustrated example, the image data 110 is first obtained by an image classification module 202. The image classification module 202 is representative of functionality to determine suitability of the image 110 for upright adjustment that may be performed to correct perspective distortion of the image by the upright adjustment module 204.

The image classification module 202, for instance, may employ criteria that are used by the upright adjustment module 204 to perform the upright adjustment. For example, the upright adjustment module 204 may identify characteristics of the image data 110 and from these characteristics compute a correction to be made to the image data 110 to correct the perceived skewing in the image. This may include identification of man-made structures, natural features that are typically relatively straight such as trees and horizons, and so on. The upright adjustment module 204 may then use the identification of these features to correct skewing of the image data 110 in two dimensional or three dimensional space.

Accordingly, the image classification module 202 may leverage knowledge of these characteristics to classify the image data 110 based on suitability of the image data 110 for the upright adjustment techniques performed by the upright adjustment module 204. Additionally, this classification may be performed by the image classification module 202 without actually performing the techniques to adjust the image data 110 by the upright adjustment module 204. Therefore, resources of the computing device 102 (e.g., processing and memory resources) as well as time by a user of the computing device 102 may be conserved.

For example, the image classification module 202 may classify the image data 110 as suitable for upright adjustment techniques performed by the upright adjustment module 204. Accordingly, these techniques may then be performed by the upright adjustment module 204 responsive to this classification to generate the adjusted image data 118.

In the illustrated example, the image data 110 is skewed as previously described such that the image of the buildings are slanted relative to edges of the image depicted by the image data 110. The upright adjustment techniques may then be performed by the upright adjustment module 204 to correct perspective of the image data 110 to form the adjusted image data 118 in which the buildings are oriented vertically and so on relative to the edges of the image.

Additionally, these techniques may be leveraged by a variety of other image adjustment techniques to locate a technique that has a likelihood of functioning as intended to correct perspective distortion. For example, the image classification module 202 may classify the image data 110 as not suited for use by the upright adjustment module 204 to correct perspective distortion. Accordingly, suitability of one or more other image adjustment techniques may be determined that are different than the upright adjustment techniques.

An example of such a technique is illustrated in the system 200 of FIG. 2 as involving a horizon. A horizon detection module 206, for instance, may be representative of functionality to detect whether a horizon is identifiable in the image data 110. If so, a horizon adjustment module 208 may be employed that performs one or more image adjustment techniques to correct perspective distortion based on the detected horizon in the image data 110 to form the adjustment imaged data 118. For example, some outdoor images may not include a clear horizon line, which may be calculated in a variety of ways as further described in relation to FIG. 5. An image that includes a close-up of a flower or animal, for instance, may not include an indication of a clear horizon line and thus may be ill suited for use of horizon adjustment techniques. Thus, like the image classification module 202, the horizon detection module 206 may also classify the image data 110 based on suitability for a corresponding image adjustment technique. This classification may then serve as a basis to determine whether to perform the operations of the horizon adjustment module 208.

This process may continue to iterate through a variety of different image adjustment techniques to locate a technique that has a likelihood of success. In one or more implementations, if it is determined that none of the techniques are suitable for being performed on the image, no correction 210 is performed on the image data 110. Thus, in such a situation the image data 210 may “remain as is” without correction and thus failures encountered using conventional techniques may be avoided, such as to align to an image edge that is not the horizon and so on. An example of the classification techniques is described as follows and as shown in the corresponding figure. Each of these classifications techniques involves criteria that may be used to determine suitability to correct perspective distortion for the respective technique. For example, the criteria may include ratios, thresholds, lengths, and so on that are utilized to determine suitability for a respective technique. The ratios, thresholds, lengths, and so on may involve values that are calculated in a variety of ways to determine the suitability, such as through machine learning techniques that may be applied to the criteria alone (e.g., to arrive at a ratio), the criteria in combination (e.g., a ratio and a length), and so on as further described below.

FIG. 3 depicts a system 300 showing the image classification module 202 in greater detail as employing criteria to determine suitability for an associated image adjustment technique. This system is 300 shown using first, second, and third stages 302, 304, 306.

At the first stage 302, image data 110 is shown that is captured using one or more image sensors 106 of an image capture device 104. The image data 110 is captured of an image scene that includes a street with building and a crossing light.

At the second stage 304, the image data 110 is processed by an edge detection module 308. The edge detection module 308 is representative of functionality to detect edges 310 in the image data 110. The edge detection module 308, for instance, may detect differences in textures, colors, and so on in the image data 110 that are indicative of edges, such as edges indicating a change from one object to another in the image data 110.

At the third stage 306, the image data 110 is processed by a line detection module 312. The line detection module 312 is representative of techniques to detect line segments 314 from the image data 110. This may be performed directly on the image data 110 or indirectly using the edges 310 detected by the edge detection module 308. For example, the line detection module 312 may be configured to determine which edges 310 detected by the edge detection module 308 are relatively or substantially straight.

The image classification module 202 may then employ this data as part of the classification of the image data 110. For example, the image classification module 202 may employ an edge/line analysis module 316. The edge/line analysis module 316 is representative of functionality to classify the image data 110 for suitability for adjustment by the upright adjustment module 204 of FIG. 2 based on a ratio between a number of edge pixels and line pixels in the image data 110 as computed by the edge detection module 308 and line detection modules 312, respectively. A relatively high ratio is indicative of an instance in which a corresponding portion of the edges are straight lines. This may indicate inclusion of man-made structure, such as building that has straight edges as opposed to natural objects (e.g., a mountain or flower) that contain mostly curved edges. As such, a high ratio suggests that the image may contain a dominant man-made structure that is indicative of a direction to which the image may be aligned, e.g., “upright.” A threshold that may be employed to determine whether ratio is sufficient may be generated through machine learning, e.g., for this ratio alone, for this ratio alone, for this ratio along with other criteria as further described below, and so forth. Thus, this analysis may be performed as part of the classification to analyze whether the image data 110 has sufficient indications of lines that may serve as a basis to adjust the image data 110 and thus may define suitability of the image for the perspective correction technique.

FIG. 4 depicts a system 400 showing the image classification module 202 in greater detail as employing additional criteria to determine suitability for an associated image adjustment technique. This system is 400 is shown using first, second, and third stages 402, 404, 406. At the first stage 402, image data 110 is again shown that is captured using one or more image sensors 106 of an image capture device 104.

At the second stage 404, the image data 110 is processed by a line detection module 308 to detect line segments 410. As before, this may be performed in a variety of different ways, such as through use of the edge detection module 308 and line detection module 312 of FIG. 3. In this way, the image classification module 202 may determine a number of pixels of the image data 110 that is associated with lines.

At the third stage 406, a vanishing line detection module 412 of the image classification module 202 is utilized to detect which of the line segments 410 correspond to vanishing lines 414 in the image data 110. This may be computed in a variety of ways, such as through use of an energy function to obtain Manhattan directions “M=[v_(x) v_(y) v_(z)]” where “v_(x),” v_(y),” and “v_(t),” that represent three vanishing points that correspond to x, y, and z direction, respectively.

The image classification module 202 may then employ this data as part of the classification of the image data 110. For example, the image classification module 202 may employ a vanishing line analysis module 416. The vanishing line analysis module 416 is representative of functionality to classify the image data 110 for suitability for adjustment by the upright adjustment module 204 of FIG. 2 based on a ratio between a number of line pixels and vanishing line pixels in the image data 110. For example, some line pixels may not correspond to vanishing points, such as in instances caused by textures in the image rather than object structure. An image that includes a zebra crossing, for instance, may contain a relatively large number of lines, but these lines are not indicative of structure of the scene. Accordingly, lines that are not vanishing lines may be ill suited for adjustment to correct perspective distortion, such as upright adjustment and thus a relatively low ratio may indicate suitability for adjustment, and accordingly may serve as a basis for classification of the image as suitable for the perspective correction technique. As above, a threshold may be employed as a basis determine whether a ratio is sufficient. The threshold for the ratio may be generated through machine learning, e.g., for this ratio alone, for this ratio along with other factors described below, and so forth. Thus, this analysis may be performed as part of the classification to analyze whether the image data 110 has sufficient indications of directions as indicated by vanishing lines that may be used as a basis to align the image data 110.

The vanishing line analysis module 416 may also employ other techniques based on vanishing lines as part of the analysis to classify the image data 110. For example, the vanishing line analysis module 416 may be utilized to compute average line segment lengths of horizontal and vertical vanishing lines. For example, the vanishing line analysis module 416 may compute a length of “N” number of longest lines segments among horizontal and vertical line segments, respectively. For example, if the image contains relatively long vertical or horizontal vanishing lines, these lines generally originate from dominant man-made structures which as described above may be indicative of structure that may be employed to correct perspective distortion. As such, an image with relatively short lines may be ill-suited for perspective distortion, such as a tree with a significant number of branches as these short lines usually point to slightly different directions. As above, a threshold that may be employed to determine whether a length is sufficient. The threshold for the ratio may be generated through machine learning, e.g., for this ratio alone, for this ratio along with other factors described below, and so forth. Thus, this may also be used as a basis for classifying the image data 110 as suited or not suited for upright adjustment.

Thus, the image adjustment module 116 may base the classification of the image data 110 on a variety of different factors, such as the two ratios and the two line segment lengths described above. These factors may then be used to determine whether the image includes a relatively strong structure and thus is suitable for upright adjustment. Further, this determination may be performed automatically and without user intervention. If the image data 110 is not suitable for upright adjustment, suitability of the image data 110 for a different image adjustment technique may be determined, an example of which is described as follows and shown in the corresponding figure.

FIG. 5 depicts a system 500 showing the image classification module of FIG. 2 in greater detail as employing criteria to determine suitability for an associated image adjustment technique that involves a horizon. This system is 500 shown using first, second, and third stages 502, 504, 506. At the first stage 502, image data 110 is shown that is captured using one or more image sensors 106 of an image capture device 104. The image data 110 is captured of an image scene that includes the sea and sky with a few boats.

At the second stage 504, the image data 110 is processed by a horizon detection module 508. The horizon detection module 508 is representative of functionality to detect whether a horizon is identifiable in the image data 110. For example, the horizon detection module 508 may also include functionality to detect a line as well as a total length of line segments that lie along that line, which is illustrated in FIG. 5 through use of a phantom line that follows a separation of the sky and sea.

Differences in portions on either side of the line may also be identified. This may include measuring a difference in color, gradient, and so on between two regions of the image data 110 that are divided by the line. This may be performed for each line segment that is identifiable in the image data 110 to determine which of the line segments, if any, are likely to correspond to the horizon.

At the third stage 506, a horizon adjustment module 512 is employed to adjust the image data 110 to generate the adjusted image data 118 that is consistent with human perception expectations. In this example, the image data 110 is adjusted such that the detected horizon runs horizontal between the edges of the image data 110. Thus, in this example, the image data 110 was classified as suitable for horizon adjustment based techniques based on whether a horizon is identifiable in the image, which were then employed to adjust the image data 110. Other image adjustment techniques may also employ these features without departing from the spirit and scope thereof Further, as previously described in relation to FIG. 2 instances may be encountered in which the image data 110 is not suitable for the image adjustment techniques. Accordingly, in such an instance the adjustment of the image data 110 may be skipped to leave the image data 110 “as is.” Further discussion of these and other techniques may be found in relation to the following procedures.

Example Procedures

The following discussion describes image classification techniques that may be implemented utilizing the previously described systems and devices. Aspects of each of the procedures may be implemented in hardware, firmware, or software, or a combination thereof. The procedures are shown as a set of blocks that specify operations performed by one or more devices and are not necessarily limited to the orders shown for performing the operations by the respective blocks. In portions of the following discussion, reference will be made to FIGS. 1-5.

FIG. 6 depicts a procedure 600 in an example implementation in which an image is classified based on suitability for adjustment to correct perspective distortion of the image. An image is classified based on suitability of the image for adjustment to correct perspective distortion of the image (block 602). The image, for instance, may be classified for suitability for upright adjustment, horizon adjustment, and so on.

Responsive to the classification of the image as suitable for the adjustment, one or more adjustment operations are performed on the image (block 604). Continuing with the previous example, an associated operation that corresponds to the classification may be performed based on a classification of the image as suitable for that operation.

Responsive to the classification of the image as not suitable for the adjustment, suitability is detected of the image for processing by a different image adjustment technique (block 606). In this instance, the image data is not suitable for the associated operation. Accordingly, suitability of a different operation may be explored, an example of which is described as follows and shown in the corresponding figure.

FIG. 7 depicts a procedure 700 in an example implementation in which an image is classified based on suitability for upright adjustment and/or horizon adjustment to correct perspective distortion of the image. An image is classified based on suitability for upright adjustment (block 702). This may be performed in a variety of ways, such as through analysis of edge pixels and line pixels in the image (block 704), analysis of line pixels and vanishing line pixels in the image (block 706), vertical and horizontal vanishing lines in the image (block 708), and so on.

Responsive to the classification of the image as suitable for upright adjustment, one or more upright adjustment operations are performed on the image that correct perspective distortion of the image (block 710). The upright adjustment module 204, for instance, may then be employed to perform the adjustment techniques after a determination that these techniques have a likelihood of operating as intended.

Responsive to the classification of the image as not suitable for upright adjustment, it is detected whether a horizon is identifiable from the image (block 712). If so, one or more horizon adjustment operations are performed on the image (block 714). If no, performance of the one or more horizon adjustment operations on the image is skipped (block 716). A variety of other examples are also contemplated, such as to employ these classification techniques to determine suitability of a variety of other image adjustment techniques as previously described.

Example System and Device

FIG. 8 illustrates an example system generally at 800 that includes an example computing device 802 that is representative of one or more computing systems and/or devices that may implement the various techniques described herein. This is illustrated through inclusion of the image processing module 112, which may be configured to process image data, such as image data captured by an image capture device 104. The computing device 802 may be, for example, a server of a service provider, a device associated with a client (e.g., a client device), an on-chip system, and/or any other suitable computing device or computing system.

The example computing device 802 as illustrated includes a processing system 804, one or more computer-readable media 806, and one or more I/O interface 808 that are communicatively coupled, one to another. Although not shown, the computing device 802 may further include a system bus or other data and command transfer system that couples the various components, one to another. A system bus can include any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and/or a processor or local bus that utilizes any of a variety of bus architectures. A variety of other examples are also contemplated, such as control and data lines.

The processing system 804 is representative of functionality to perform one or more operations using hardware. Accordingly, the processing system 804 is illustrated as including hardware element 810 that may be configured as processors, functional blocks, and so forth. This may include implementation in hardware as an application specific integrated circuit or other logic device formed using one or more semiconductors. The hardware elements 810 are not limited by the materials from which they are formed or the processing mechanisms employed therein. For example, processors may be comprised of semiconductor(s) and/or transistors (e.g., electronic integrated circuits (ICs)). In such a context, processor-executable instructions may be electronically-executable instructions.

The computer-readable storage media 806 is illustrated as including memory/storage 812. The memory/storage 812 represents memory/storage capacity associated with one or more computer-readable media. The memory/storage component 812 may include volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth). The memory/storage component 812 may include fixed media (e.g., RAM, ROM, a fixed hard drive, and so on) as well as removable media (e.g., Flash memory, a removable hard drive, an optical disc, and so forth). The computer-readable media 806 may be configured in a variety of other ways as further described below.

Input/output interface(s) 808 are representative of functionality to allow a user to enter commands and information to computing device 802, and also allow information to be presented to the user and/or other components or devices using various input/output devices. Examples of input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone, a scanner, touch functionality (e.g., capacitive or other sensors that are configured to detect physical touch), a camera (e.g., which may employ visible or non-visible wavelengths such as infrared frequencies to recognize movement as gestures that do not involve touch), and so forth. Examples of output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, tactile-response device, and so forth. Thus, the computing device 802 may be configured in a variety of ways as further described below to support user interaction.

Various techniques may be described herein in the general context of software, hardware elements, or program modules. Generally, such modules include routines, programs, objects, elements, components, data structures, and so forth that perform particular tasks or implement particular abstract data types. The terms “module,” “functionality,” and “component” as used herein generally represent software, firmware, hardware, or a combination thereof. The features of the techniques described herein are platform-independent, meaning that the techniques may be implemented on a variety of commercial computing platforms having a variety of processors.

An implementation of the described modules and techniques may be stored on or transmitted across some form of computer-readable media. The computer-readable media may include a variety of media that may be accessed by the computing device 802. By way of example, and not limitation, computer-readable media may include “computer-readable storage media” and “computer-readable signal media.”

“Computer-readable storage media” may refer to media and/or devices that enable persistent and/or non-transitory storage of information in contrast to mere signal transmission, carrier waves, or signals per se. Thus, computer-readable storage media refers to non-signal bearing media. The computer-readable storage media includes hardware such as volatile and non-volatile, removable and non-removable media and/or storage devices implemented in a method or technology suitable for storage of information such as computer readable instructions, data structures, program modules, logic elements/circuits, or other data. Examples of computer-readable storage media may include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, hard disks, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other storage device, tangible media, or article of manufacture suitable to store the desired information and which may be accessed by a computer.

“Computer-readable signal media” may refer to a signal-bearing medium that is configured to transmit instructions to the hardware of the computing device 802, such as via a network. Signal media typically may embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier waves, data signals, or other transport mechanism. Signal media also include any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media.

As previously described, hardware elements 810 and computer-readable media 806 are representative of modules, programmable device logic and/or fixed device logic implemented in a hardware form that may be employed in some embodiments to implement at least some aspects of the techniques described herein, such as to perform one or more instructions. Hardware may include components of an integrated circuit or on-chip system, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a complex programmable logic device (CPLD), and other implementations in silicon or other hardware. In this context, hardware may operate as a processing device that performs program tasks defined by instructions and/or logic embodied by the hardware as well as a hardware utilized to store instructions for execution, e.g., the computer-readable storage media described previously.

Combinations of the foregoing may also be employed to implement various techniques described herein. Accordingly, software, hardware, or executable modules may be implemented as one or more instructions and/or logic embodied on some form of computer-readable storage media and/or by one or more hardware elements 810. The computing device 802 may be configured to implement particular instructions and/or functions corresponding to the software and/or hardware modules. Accordingly, implementation of a module that is executable by the computing device 802 as software may be achieved at least partially in hardware, e.g., through use of computer-readable storage media and/or hardware elements 810 of the processing system 804. The instructions and/or functions may be executable/operable by one or more articles of manufacture (for example, one or more computing devices 802 and/or processing systems 804) to implement techniques, modules, and examples described herein.

The techniques described herein may be supported by various configurations of the computing device 802 and are not limited to the specific examples of the techniques described herein. This functionality may also be implemented all or in part through use of a distributed system, such as over a “cloud” 814 via a platform 816 as described below.

The cloud 814 includes and/or is representative of a platform 816 for resources 818. The platform 816 abstracts underlying functionality of hardware (e.g., servers) and software resources of the cloud 814. The resources 818 may include applications and/or data that can be utilized while computer processing is executed on servers that are remote from the computing device 802. Resources 818 can also include services provided over the Internet and/or through a subscriber network, such as a cellular or Wi-Fi network.

The platform 816 may abstract resources and functions to connect the computing device 802 with other computing devices. The platform 816 may also serve to abstract scaling of resources to provide a corresponding level of scale to encountered demand for the resources 818 that are implemented via the platform 816. Accordingly, in an interconnected device embodiment, implementation of functionality described herein may be distributed throughout the system 800. For example, the functionality may be implemented in part on the computing device 802 as well as via the platform 816 that abstracts the functionality of the cloud 814.

Conclusion

Although the invention has been described in language specific to structural features and/or methodological acts, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as example forms of implementing the claimed invention. 

What is claimed is:
 1. A method implemented by one or more computing devices, the method comprising: classifying an image based on suitability of the image for adjustment by an image adjustment technique to correct perspective distortion of the image; and responsive to the classifying of the image as not suitable for the adjustment, detecting suitability of the image for processing by a different image adjustment technique.
 2. A method as described in claim 1, further comprising responsive to the classifying of the image as suitable for the adjustment, performing one or more adjustment operations of the image adjustment technique on the image.
 3. A method as described in claim 1, wherein the image adjustment technique includes upright adjustment.
 4. A method as described in claim 1, wherein the classifying of the image as suitable for adjustment by the image adjustment technique further comprises analyzing edge pixels and line pixels of the image.
 5. A method as described in claim 4, wherein the analyzing is based on a ratio between a number of the edge pixels and a number of the line pixels.
 6. A method as described in claim 1, wherein the classifying of the image as suitable for adjustment by the image adjustment technique further comprises analyzing line pixels and vanishing line pixels of the image.
 7. A method as described in claim 6, wherein the analyzing is based on a ratio between a number of the line pixels and a number of the vanishing line pixels.
 8. A method as described in claim 1, wherein the classifying of the image as suitable for adjustment by the image adjustment technique further comprises analyzing vertical and horizontal vanishing lines in the image.
 9. A method as described in claim 8, wherein the analyzing is based on an average of line segment lengths of the vertical and the horizontal vanishing lines in the image.
 10. A method as described in claim 1, wherein the detecting of the suitability for the different image adjustment technique includes detecting whether a horizon is identifiable from the image.
 11. A method as described in claim 10, further comprising: responsive to the detecting that the horizon is identifiable from the image, performing one or more horizon adjustment operations on the image; and responsive to the detecting that the horizon is not identifiable from the image, skipping performance of the one or more horizon adjustment operations on the image.
 12. One or more computer-readable storage media comprising instructions stored thereon that, responsive to execution by a computing device, causes the computing device to perform operations comprising: classifying an image based on suitability of the image for upright adjustment, the classifying comprising: analyzing edge pixels and line pixels in the image; analyzing line pixels and vanishing line pixels in the image; or analyzing vertical and horizontal vanishing lines in the image; and responsive to the classifying of the image as suitable for upright adjustment, performing one or more upright adjustment operations on the image that correct perspective distortion of the image.
 13. One or more computer-readable storage media as described in claim 12, wherein the analyzing is based on a ratio between a number of the edge pixels and a number of the line pixels.
 14. One or more computer-readable storage media as described in claim 12, wherein the analyzing is based on a ratio between a number of the line pixels and a number of the vanishing line pixels.
 15. One or more computer-readable storage media as described in claim 12, wherein the analyzing is based on an average of line segment lengths of the vertical and the horizontal vanishing lines in the image.
 16. One or more computer-readable storage media as described in claim 12, further comprising responsive to the classifying of the image as not suitable for the upright adjustment, detecting whether a horizon is identifiable from the image.
 17. A system comprising: at least one module implemented at least partially in hardware, the at least one module configured to classify an image based on suitability of the image for upright adjustment; and one or more modules implemented at least partially in hardware, the one or more modules configured to perform one or more upright adjustment operations on the image that correct perspective distortion of the image responsive to the classification of the image as suitable for upright adjustment.
 18. A system as described in claim 17, wherein the at least one module is configured to perform the classification of the image by: analyzing edge pixels and line pixels of the image; analyzing line pixels and vanishing line pixels of the image; or analyzing vertical and horizontal vanishing lines in the image.
 19. A system as described in claim 18, wherein: the analyzing is based on a ratio between a number of the edge pixels and a number of the line pixels; the analyzing is based on a ratio between a number of the line pixels and a number of the vanishing line pixels; or the analyzing is based on an average of line segment lengths of the vertical and the horizontal vanishing lines in the image.
 20. A system as described in claim 17, further comprising a module implemented at least partially in hardware and configured to detect whether a horizon is identifiable from the image responsive to the classification of the image as not suitable for the upright adjustment and responsive to the detection that the horizon is identifiable, perform one or more horizon adjustment techniques to the image. 